import Vue from 'vue'
import App from './App'
import router from './router'
// 引入axios
import axios from 'axios'
// 导入局样式
import './assets/css/global.css'
// 导入字体图标
import './assets/fonts/iconfont.css'
// 导入树形表格
import TreeGrid from 'vue-table-with-tree-grid'

// 安装并使用element-ui
import ElementUI from 'element-ui'
Vue.use(ElementUI)

// 创建全剧组件
Vue.component('tree-grid', TreeGrid)

// 路由守卫
router.beforeEach((to, from, next) => {
  if (to.path === '/login') return next()
  // 获取token
  const token = sessionStorage.getItem('token')
  // 判断token的状态,取反则没有token，让用户去登录
  if (!token) return next('/login')
  next()
})

// 设置基准请求地址
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'

// 把axios注册到Vue
Vue.prototype.$http = axios

// 请求拦截器
axios.interceptors.request.use(
  function(config) {
    // 每次请求时都要把令牌添加到请求头
    const token = sessionStorage.getItem('token')
    // 添加到请求头中
    config.headers.Authorization = token
    return config
  },
  function(error) {
    return Promise.reject(error)
  }
)

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  render: h => h(App)
})
